package cn.thinkluck.pattern.state;

/**
 * 小米电视
 *
 * @Author liutao
 * @DateTime 2024/8/3 下午4:08
 */
public class XiaoMiTV {
    //TV持有的操作状态
    private TV tv;

    /**
     * 默认状态为打开状态
     */
    public XiaoMiTV() {
        this.tv = new TVOffStateImpl();
    }

    /**
     * 用来改变TV的状态
     *
     * @param tv 电视状态
     */
    private void changeState(TV tv) {
        this.tv = tv;
    }

    /**
     * 打开电视
     */
    void open() {
        //调用状态机
        this.tv.open();
        //将状态变更为开机
        this.changeState(new TVOnStateImpl());
    }

    /**
     * 关闭电视
     */
    void close() {
        //调用状态机
        this.tv.close();
        //将状态变更为关机
        this.changeState(new TVOffStateImpl());
    }

    /**
     * 增大音量
     */
    void volumeUp() {
        //调用状态机
        this.tv.volumeUp();
    }
}
